﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using SlimDX;

namespace starpillage.Rendering.Terrain
{
    public class Noise
    {
        //const int OctaveCount = 5;
        //const int Seed = 42598;
        //Random random = new Random(Seed);

        //public float GetNoiseGrid(int x, int y)
        //{
        //    random.
        //}

        //public float GetNoise(Vector2 p, out Vector2 derivative)
        //{
        //    int i = (int)n.X;
        //    int j = (int)n.Y;
        //    float u = n.X - i;
        //    float v = n.Y - j;

        //    float du = 30.0f*u*u*(u*(u-2.0f)+1.0f);
        //    float dv = 30.0f*v*v*(v*(v-2.0f)+1.0f);

        //    u = u*u*u*(u*(u*6.0f-15.0f)+10.0f);
        //    v = v*v*v*(v*(v*6.0f-15.0f)+10.0f);

        //    float a = random.( i+0, j+0);
        //    float b = myRandomMagic( i+1, j+0);
        //    float c = myRandomMagic( i+0, j+1);
        //    float d = myRandomMagic( i+1, j+1);


        //    float k0 =   a;
        //    float k1 =   b - a;
        //    float k2 =   c - a;
        //    float k3 =   a - b - c + d;

        //    derivative = new Vector2(
        //        du * (k1 + k3*v),
        //        dv * (k2 + k3*u));
        //    return k0 + k1*u + k2*v + k3*w + k4*u*v + k5*v*w + k6*w*u + k7*u*v*w;
        //}


        //public float Get(Vector3 p)
        //{
        //    float f = 0.0f;
        //    float w = 0.5f;
        //    float dx = 0.0f;
        //    float dz = 0.0f;
        //    for(int i=0; i < OctaveCount; i++)
        //    {
        //        Vector3 n;
        //        dnoise2f( n, x, y );
        //        dx += n[1];
        //        dz += n[2];
        //        f += w * n[0] / (1.0f + dx*dx + dz*dz); // replace with "w * n[0]" for a classic fbm()
        //    w *= 0.5f;
        //    x *= 2.0f;
        //    y *= 2.0f;
        //}
    }
}
